// 封装axios的请求工具
import axios from "axios";
import router from "@/router";
import {Message} from "element-ui";
// import {Message} from "element-ui";
// import ElementUI from "element-ui";

//创建一个新的axios对象
const request =axios.create({
    baseURL: process.env.VUE_APP_BASEURL,
    timeout: 30000,
})

//request 拦截器
//可以在请求发送前对请求做一些处理，如统一加token，对请求参数统一加密
request.interceptors.request.use(config =>{
    config.headers['Content-Type']='application/json;charset=utf-8';
    let user=localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : null
    config.headers['token']=user?.token; //设置请求头   ?.表示若user对象不为null时才取其中的成员
    return config
});

//response拦截器，在接口响应后统一处理结果
request.interceptors.response.use(
    response=>{
        let res=response.data;
        //兼容字符串数据
        if(typeof res==='string'){
            res=res?JSON.parse(res):res
        }
        if(res.code===401){
            router.push('login')
            Message.error('请先登录')
        }
        // if(res.code!==200) {
        //     Message.error(res.msg)
        // }
        return res;
    },
    error => {
        if (error.response && error.response.status === 500) {
            Message.error('服务器错误')
        } else {
          Message.error(error.message)
        }
        // if(error.code==='ERR_NETWORK'){
        //     Message.error('网络连接错误')
        // }
        console.error('response error: '+error)
        return Promise.reject(error)
    }
)

export default request
